package com.shangke.corejava.ch4;
public class Array1 {
	public static void main(String[] args) {
		//数组：是一种数据结构，用于保存类型相同的一组数据；可以是基本数据类型或引用数据类型
		//设计一个数据结构，用于保存全班同学的oracle课程的成绩
		//数组的定义：数组的定义使用：数据类型 中括号[] 和变量名进行定义
		//两种结构：数据类型[] 变量名 ;   和     数据类型   变量名[];
		
		//数组需要初始化后，才能用于存放数据
		//数组的初始化有很多种方式：
		//1.在定义的时候初始化，数组在初始化时需要指定数组的长度
		double[] scores=new double[50];
		scores[0]=98;//这里是保存数据到数组当中
		scores[1]=97;
		scores[2]=96;
		scores[3]=95;
		
		String students[];//
		
		//2.在定义后初始化，数组在初始化时需要指定数组的长度
		students = new String[50];
		
		//3.在定义时初始化数组，不指定数组的长度而是直接填充数据到数组元素中
		double[] scores2= new double[]{98,97,96,93,92};
		double[] scores3={98,97,96,93,92};
		//*double[] scores2= new double[10]{98,97,96,93,92};--错误，不能指定长度
		//也不能在赋值左边指定长度
		
		//数组元素的默认值
		//1.整型数组的元素的默认值是0
		//2.浮点型数组的元素的默认值是0.0f或0.0
		//3.char类型数组的元素的默认值是\u0000
		//4.布尔值类型的数组元素的默认值是false
		//5.其他引用数据类型的默认值都是null
		
		
		//new关键词
		//在java语句中，可以使用new关键词实例化对象，在实例化过程中会进行内存空间的申请，申请后由jvm进行内存分配
		//对象申请内存后，才能保存数据
		//没有实例化的数组不能进行数组元素的访问，否则会抛出空指针异常
		
//		String[] lessons=null;
//		lessons[0]="Java核心技术";
		
		//数组元素的访问
		//数组的遍历
		//for循环
		//数组是一个对象，包含有一个length属性，可以用于获取数据的长度
		//数组的下标是从0开始的
		for(int i=0;i<scores3.length;i++){
			System.out.print(scores3[i]);
		}
		System.out.println();
		//while循环
		int index=0;
		while (index<scores3.length){
			System.out.print(scores3[index++]+"\t");
		}
		System.out.println();
		//for each  :可以遍历数组或集合
		for(double d:scores3){
			System.out.print(d+"\t");
		}

		//数组下标越界异常
		double b=scores3[scores3.length-1];//如果没有减1，那这条语句是错误的，因为长度最大是length-1,没有减1的话就是下标越界异常，超出了下标的范围
	}
}
